package wetalk.software.bupt.com.wetalk.util;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;

/**
 * Created by Administrator on 2018/1/10.
 */

public class MyAsyncTask extends AsyncTask<Void,Void,Void> {//原理是异步消息处理机制

    private ProgressDialog dialog;
    private Context mContext;
    private Boolean isShowDialog;

    public MyAsyncTask() {
        isShowDialog=false;
    }

    public MyAsyncTask(Context context) {
        mContext=context;
        isShowDialog=true;
    }

    public MyAsyncTask(Context context, Boolean b) {
        mContext=context;
        isShowDialog=b;
    }

    //这个方法会在后台任务执行之前调用，用于界面上的初始化操作，比如显示一条进度条对话框。
    @Override
    protected void onPreExecute() {
        if(mContext!=null && isShowDialog){
            dialog=new ProgressDialog(mContext);
            dialog.show();
            dialog.setCanceledOnTouchOutside(false);
        }
    }

    public void run(){};//被复写，在doInBackground中执行

    public void OnPostExecute(){};//被复写，在onPostExecute中执行

    @Override
    protected Void doInBackground(Void... params) {// ...表示实参个数可变，在这里执行具体的耗时逻辑，在子线程中执行
        run();
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {//这里的实参是doInBackground返回的结果，进行一些收尾工作，UI操作都在这里进行
        if(dialog.isShowing()){
            dialog.dismiss();
        }
        dialog=null;
        mContext=null;
        OnPostExecute();
    }
}
